package com.miao.dynamicProxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;


/**
* Description: 万能代理公司 --代理买任何票
* Author: Miao@ShaoQing
* Data: 17:52 2021/7/7
*/
public class BuyAnyTicketProxy implements InvocationHandler {


    private Object object;

    public void setObject(Object object) {
        this.object = object;
    }

    public BuyAnyTicketProxy(Object object) {
        this.object = object;
    }

    //扩展的功能： 早上早起
    private void getUpEarly(){
        System.out.println("早上早起。。。");
    }

    //扩展的功能： 打车出发去办事地方
    private void gotoDestination(){
        System.out.println("打车去办事的地方。。。");
    }

    //扩展的功能： 排队
    private  void waitInLine(){
        System.out.println("排队等候中。。。");
    }

    //扩展的功能： 打车返回
    private  void goBack(){
        System.out.println("打车返回。。。");
    }


    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

        this.getUpEarly();
        this.gotoDestination();
        this.waitInLine();
        //可以调用指定对象的指定的方法
        method.invoke(object, args);
        this.goBack();

        return null;
    }
}
